// 获取会话列表
async handleGetSessions(ws) {
    try {
        const userId = ws.userId;
        console.log('正在获取会话列表，用户ID:', userId);

        // 更全面的查询条件
        const messages = await Message.find({
            $or: [
                { sender: userId },
                { receiver: userId }
            ]
        }).distinct('sessionId');

        console.log('原始会话ID列表:', messages);

        // 去重并处理可能的ID顺序问题
        const sessionMap = new Map();
        messages.forEach(sessionId => {
            const ids = sessionId.split('-');
            // 标准化会话ID格式（按字母顺序排列用户ID）
            const normalizedId = ids.slice(0, 2).sort().concat(ids[2]).join('-');
            if (!sessionMap.has(normalizedId)) {
                sessionMap.set(normalizedId, sessionId);
            }
        });

        const distinctSessions = Array.from(sessionMap.values());
        console.log('处理后的有效会话ID:', distinctSessions);

        console.log('标准化前会话ID:', messages);
        console.log('标准化后会話映射:', Array.from(sessionMap.entries()));

        // 对每个会话获取详细信息（保持原有逻辑）
        const sessionsData = await Promise.all(distinctSessions.map(async (sessionId) => {
            // 获取最后一条消息
            const lastMessage = await Message.findOne({ sessionId })
                .sort('-createdAt')
                .lean();

            // 获取未读消息数（包含两种可能的ID顺序）
            const unreadCount = await Message.countDocuments({
                $or: [
                    { sessionId },
                    { sessionId: `${sessionId.split('-')[1]}-${sessionId.split('-')[0]}-${sessionId.split('-')[2]}` }
                ],
                receiver: userId,
                isRead: false
            });

            return { sessionId, lastMessage, unreadCount };
        }));

        // ... 保持后续处理逻辑不变 ...
    } catch (error) {
        console.error('获取会话列表时出错:', error);
        ws.send(JSON.stringify({ error: '获取会话列表时出错' }));
    }
} 